package adaptor;
//Duck 객체가 모자라서 Turkey 객체를 대신 사용해야 하는 상황일 때인터페이스가 다르기때문에 
//Turkey 객체를 바로 사용할 수는 없음.
//그래서 어댑터를 ..!
//우선 적응 시킬 형식의 인터페이스를 구현. 클라이언트에서 원하는 인터페이스 구현.
public class TurkeyAdapter implements Duck{
	Turkey turkey;
	
	//원래 형식의 객체에 대한 레퍼런스가 필요. 여기에서 생성자에서 레퍼런스를 받아오는 작업 처리.
	public TurkeyAdapter(Turkey turkey){
		this.turkey = turkey;
	}
	
	// 인터페이스에 들어있는 메소드들을 모두 구현. quack()에서는 gobble() 메소드를 호출.
	@Override
	public void quack() {
		// TODO Auto-generated method stub
		turkey.gobble();
		
	}

	// 두 인터페이스에 모두 fly()가 들어있지만 칠면조는 오리처럼 멀리 날지 못함. Turkey의
	// fly() 메소드를 Duck의 fly() 메소드에 대응시키기 위해 Turkey의 fly() 메소드를 다섯번
	// 호출해서 좀 더 멀리 움직이도록 했음.....?????
	@Override
	public void fly() {
		// TODO Auto-generated method stub
		for(int i=0; i<5; i++){
			turkey.fly();
		}
		
	}

}
